package java_thinking.unit_16;

import java.util.ArrayList;
import java.util.List;

/**
 * @Desc:   尽管不能创建实际的持有泛型的数组对象，但是可以创建非泛型的数组，然后将其转型；
 *          数组是协变类型的
 * @author: cww
 * @DateTime: 2019-04-08 23:07
 */

public class _5_1_ArrayOfGenerics {
    @SuppressWarnings("unchecked")
    public static void main(String[] args) {
        List<String>[] ls;
        List[] la = new List[10];
        //转型
        ls = (List<String>[]) la;
        ls[1] = new ArrayList<String>();
        //编译无法通过
        //! ls[2] = new ArrayList<Integer>();

        Object[] objects = ls;
        //这样就可以运行了,因为List<String> 是Object的子类,数组是协变类型的
        objects[1] = new ArrayList<Integer>();
        List<BerylliumSphere>[] spheres = (List<BerylliumSphere>[]) new List[10];
        for (int i = 0;i<spheres.length;i++) {
            spheres[i] = new ArrayList<BerylliumSphere>();
        }
    }
}
